home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PsL Monthly 1993 December
/
PSL Monthly Shareware CD-ROM (December 1993).iso
/
prgmming
/
dos
/
basic
/
pbtool.exe
/
MENUBAR.BAS
< prev
next >
Wrap
BASIC Source File
|
1991-11-12
|
5KB
|
118 lines
'----------------------------------------------------------
' PROGRAM: MENUBAR.BAS PROGRAMMER: A. KELLETT
' DATE-WRITTEN: 11/12/91
' USING POWER BASIC V2.10A
'
' THIS PROGRAM ALLOWS THE USER TO MAKE CHOICES FROM A
' MENU BAR ACROSS THE TOP OF THE SCREEN. PLEASE NOTE
' THAT ONLY 3 LINES NEED CHANGING IF YOU WANT THE MENUBAR
' LOCATED SOMEWHERE BESIDES LINE 1 (IE BOTTOM MENU BAR)
' VERSION: 1.00 LAST UPDATED: 11/12/91
'----------------------------------------------------------
$INCLUDE "KEYS.INC"
$INCLUDE "COLORS.INC"
CLS
DIM MENU$(1:8)
DIM MENU%(1:8)
LOWVAL% = 1:HIVAL% = 8 :REM** LOW/HI VALUES FOR THE CHOICES (VALID RANGE) **
'** MENU CHOICES **** COLUMN TO LOCATE IT IN ***
MENU$(1) = "1 Files ":MENU%(1) = 1
MENU$(2) = "2 Compile ":MENU%(2) = 11
MENU$(3) = "3 Editor ":MENU%(3) = 21
MENU$(4) = "4 Options ":MENU%(4) = 31
MENU$(5) = "5 Debugger":MENU%(5) = 41
MENU$(6) = "6 Host Sys":MENU%(6) = 51
MENU$(7) = "7 Network ":MENU%(7) = 61
MENU$(8) = "8 Exit-Dos":MENU%(8) = 71
REM** <<ALL>> VALID KEYS THE USER CAN PRESS **
KEYTOPRESS$ = " 12345678" + LEFTARROW$ + RIGHTARROW$ + CR$
CALL SCROLLBAR(MENU$(), MENU%(), 1, 1, LOWVAL%, HIVAL%, KEYTOPRESS$, CHOICE%)
LOCATE 22,15:PRINT "YOU CHOSE OPTION ";CHOICE%
END
' YOU NEED BOTH SUBROUTINES (SCROLLBAR AND LITEBAR3) IN YOUR PROGRAM.
' MENU$() - ARRAY CONTAINING THE MENU TEXT FOR ALL CHOICES
' LOWVAL% - LOWEST CHOICE, SHOULD <ALWAYS> BE 1 !
' HIVAL% - HIGHEST CHOICE, FOR 10 ITEM MENU SHOULD BE 10
' VALIDKEY$ - SHOULD CONTAIN ANY KEYS YOU WILL ALLOW FOR
' IE. VALIDKEYS$ = " 012345678" + LEFTARROW$ + RIGHTARROW$ + CR$
' BE SURE THE INITIAL SPACE IS LEFT IN AND SEE CHARS.INC FOR
' PREDEFINED KEYS YOU CAN USE FOR READABILITY.
' KEYPRESS% - CONTAINS A NUMBER REPRESENTING WHICH MENU CHOICE WAS
' HILIGHTED WHEN THE USER PRESSED THE <ENTER> KEY
' NOTES: THIS ROUTINE DOES NOT CHECK WHETHER LENGTH OF ALL MENU CHOICES
' ARE LONGER THAN 80 CHARACTERS (LESS THAN 80 IS NO PROBLEM). YOU
' MUST SET UP THE MENU$() AND MENU%() CORRECTLY BEFORE CALLING THIS
' ROUTINE.
'
'----------------------------------------------------------
SUB SCROLLBAR(MENU$(), MENU%(), OLD.POS%, NEW.POS%, LOWVAL%, HIVAL%, VALIDKEY$, KEYPRESS%)
SHARED LEFTARROW$, RIGHTARROW$, CR$
QUITFLAG% = 0:OLD.POS% = 1:NEW.POS% = 1
'**** DISPLAY INITIAL MENU CHOICES ****
FOR I% = LOWVAL% TO HIVAL%
LOCATE 1, MENU%(I%) :REM** CHANGE TO ANOTHER LINE IF NEEDED **
PRINT MENU$(I%);
NEXT I%
LOCATE 20,15:PRINT "PRESS <Enter> TO EXIT"
'**** LOOP UNTIL USER PRESSES <RETURN> KEY ****
WHILE QUITFLAG% = 0
CALL LITEBAR3(MENU$(), OLD.POS%, NEW.POS%, MENU%())
DO
KEYIN$ = INKEY$
LOOP UNTIL INSTR(VALIDKEY$, KEYIN$) > 1
IF (KEYIN$ = "0" OR KEYIN$ = CR$) THEN
KEYPRESS% = NEW.POS% :REM** WHICH KEY WAS THE CHOICE ON ?? **
QUITFLAG% = 1 :REM** EXIT THIS SUBROUTINE **
ELSE
IF (KEYIN$ = LEFTARROW$ AND NEW.POS% > LOWVAL%) THEN
OLD.POS% = NEW.POS%
NEW.POS% = NEW.POS% - 1
CALL LITEBAR3(MENU$(), OLD.POS%, NEW.POS%, MENU%())
ELSE
IF (KEYIN$ = RIGHTARROW$ AND NEW.POS% < HIVAL%) THEN
OLD.POS% = NEW.POS%
NEW.POS% = NEW.POS% + 1
CALL LITEBAR3(MENU$(), OLD.POS%, NEW.POS%, MENU%())
ELSE
IF (KEYIN$ = LEFTARROW$ AND NEW.POS% = 1) THEN
OLD.POS% = 1
NEW.POS% = HIVAL%
CALL LITEBAR3(MENU$(), OLD.POS%, NEW.POS%, MENU%())
ELSE
IF (KEYIN$ = RIGHTARROW$ AND NEW.POS% = HIVAL%) THEN
OLD.POS% = HIVAL%
NEW.POS% = 1
CALL LITEBAR3(MENU$(), OLD.POS%, NEW.POS%, MENU%())
ELSE
IF (KEYIN$ <> LEFTARROW$ AND KEYIN$ <> RIGHTARROW$) THEN
NEW.POS% = VAL(KEYIN$)
CALL LITEBAR3(MENU$(), OLD.POS%, NEW.POS%, MENU%())
END IF
END IF
END IF
END IF
END IF
END IF
WEND
END SUB
'
'
'----------------------------------------------------------
SUB LITEBAR3(MENU$(), OLD.POS%, NEW.POS%, MENU%())
SHARED BLACK%, HIGH.INTENSITY.WHITE%, WHITE%
LOCATE 1, MENU%(OLD.POS%) :REM** CHANGE TO ANOTHER LINE IF NEEDED **
COLOR WHITE%, BLACK%:PRINT MENU$(OLD.POS%);:COLOR BLACK%, WHITE%
'*** NOW HILIGHT NEW CHOICE ***
COLOR BLACK%, HIGH.INTENSITY.WHITE%
LOCATE 1, MENU%(NEW.POS%) :REM** CHANGE TO ANOTHER LINE IF NEEDED **
PRINT MENU$(NEW.POS%);:COLOR WHITE%, BLACK%
OLD.POS% = NEW.POS%
END SUB